<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>5.8.0-代理 Set 和 Map</title>
</head>

<body>
    <div id="container"></div>
</body>
    <script>
    /**
     * 使用 Proxy 代理集合类型的数据不同于代理普通对象，
     *  因为集合类型数据的操作与普通对象存在很大的不同
     * - Set 类型使用 add(value) 方法添加元素，
     *    而 Map 类型使用set(key, value) 方法设置键值对，
     *    并且 Map 类型可以使用 get(key) 方法读取相应的值。
     * 
     */

    /**
     * Set 类型的原型属性和方法如下
     * - size: 返回集合中的元素个数
     * - add(value): 向集合中添加一个元素
     * - delete(value): 从集合中删除一个元素
     * - has(value): 判断集合中是否存在某个元素
     * - clear(): 清空集合
     * - keys(): 返回集合中所有元素的键名
     * - values(): 返回集合中所有元素的键值
     * - entries(): 返回集合中所有元素的键值对
     * - forEach(callback,[thisArg]): 遍历集合中的所有元素, 第二个参数 thisArg，用于指定callback 函数执行时的 this 值
     * 
    */

   /**
    * Map 类型的原型属性和方法如下
    * - size: 返回集合中的元素个数
    * - set(key,value): 向集合中添加一个元素
    * - get(key): 获取集合中指定键名的元素
    * - delete(key): 从集合中删除一个元素
    * - has(key): 判断集合中是否存在某个元素
    * - clear(): 清空集合
    * - keys(): 返回集合中所有元素的键名
    * - values(): 返回集合中所有元素的键值
    * - entries(): 返回集合中所有元素的键值对
    * - forEach(callback,[thisArg]): 遍历集合中的所有元素, 第二个参数 thisArg，用于指定callback 函数执行时的 this 值
   */


</script>

</html>